/**
* @author: 善良的YWJ
* @Created by shanliangdeYWJ on 2020/09/15 02:09:28
* @file: request.js
* @description:
* ==================
 * axios
 *      拦截器设置：请求拦截增加token
 *      拦截器设置：判断响应码，很具响应码设置弹出信息
* ==================
* @link [Github](https://github.com/shanliangdeYWJ)
 */

import axios from 'axios';
import { Message } from 'element-ui';

const service = axios.create({
  // baseURL: 'http://localhost:8080',
  baseURL: process.env.VUE_APP_API,
  // 公共接口--
  // 超时时间 单位是ms，这里设置了5s的超时时间
  timeout: 10 * 1000
});

service.interceptors.request.use((config) => {
  return config;
}, (error) => {
  Promise.reject(error);
});

service.interceptors.response.use((response) => {
  // console.log(response) // 打印返回值
  return response;
}, error => {
  if (error && error.response) {
    switch (error.response.status) {
      case 400: error.message = '错误请求'; break;
      case 401: error.message = '未授权，请重新登录'; break;
      case 403: error.message = '拒绝访问'; break;
      case 404: error.message = '请求错误,未找到该资源'; break;
      case 405: error.message = '请求方法未允许'; break;
      case 408: error.message = '请求超时'; break;
      case 500: error.message = '服务器端出错'; break;
      case 501: error.message = '网络未实现'; break;
      case 502: error.message = '网络错误'; break;
      case 503: error.message = '服务不可用'; break;
      case 504: error.message = '网络超时'; break;
      case 505: error.message = 'http版本不支持该请求'; break;
      default: error.message = `连接错误${error.response.status}`;
    }
  } else {
    // 超时处理
    if (JSON.stringify(error).includes('timeout')) {
      Message.error({ message: '服务器响应超时，请刷新当前页', showClose: true });
    }
    Message.error('连接服务器失败');
  }

  Message.error({ message: error.message, showClose: true });
  /** *** 处理结束 *****/
  // 如果不需要错误处理，以上的处理过程都可省略
  return Promise.resolve(error.response);
});
export default service;
